"""
需求：
1. 设计一个 Game 类
2. 属性:
• 定义一个 top_score 类属性 ‐> 记录游戏的历史最高分
• 定义一个 player_name 实例属性 ‐> 记录当前游戏的玩家姓名
3. 方法:
• 静态方法 show_help() ‐> 显示游戏帮助信息
• 类方法 show_top_score() ‐> 显示历史最高分
• 实例方法 start_game() ‐> 开始当前玩家的游戏
4. 主程序步骤:
① 查看帮助信息
② 查看历史最高分
③ 创建游戏对象， 开始游戏
"""


# game游戏案例
# 定义类
class Game(object):
    # 定义类属性：存放游戏的历史最高分，初始值0
    top_score = 0

    # 定义实例属性
    def __init__(self, play_name):
        self.play_name = play_name

    # 定义方法：静态方法
    @staticmethod  # 装饰器：标记给python解释器这个是静态方法
    def show_help():
        print("新手，请查看.....")

    # 类方法：获取历史最高分
    @classmethod
    def show_top_score(cls):
        print(f"历史最高分为：{cls.top_score}")

    def start_game(self):
        # 开始玩...
        print("玩家开始....")
        # 分数变化，每次递增100分
        Game.top_score += 100
    # 游戏结束...


print(f"游戏结束....,最后的得分为：{Game.top_score}")
# 查看帮助信息‐‐> 调用show_help方法
Game.show_help()
# 查看历史最高分
Game.show_top_score()
# 创建玩家对象 ‐‐‐> 通过类创建对象 ‐‐> 实例化
g1 = Game("张三")
# 开始玩游戏 ‐‐‐> 调用玩游戏的方法
g1.start_game()
g1.start_game()
g1.start_game()
# 思考：为什么对象也可以调用静态方法和类方法？
# ‐‐> 因为对象是由类创建出来的，拥有类的所有属性和方法，所以通过实例直接可以调用
g1.show_help()
g1.show_top_score()
# 再次查看历史最高分
Game.show_top_score()
